package queue;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
@Slf4j
public class PriorityQueueDemo {
    public static void main(String[] args) {
      int[] nums = {1, 5, 3, 7, 4, 2, 6};

        PriorityQueue<Integer> queue = new PriorityQueue<Integer>(200,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        queue.offer(3);
        queue.offer(5);
        queue.offer(7);
        queue.offer(4);
        queue.offer(2);
        queue.offer(6);
        queue.offer(1);
        for (Object element : queue) {
            System.out.println(element);
        }
        Iterator<Integer> iterator = queue.iterator();
        while (iterator.hasNext()) {
            log.info("排序后的数据：{}", queue.poll());
        }

//        System.out.println(Arrays.toString(queue.toArray()));
//        Arrays.stream(nums).forEach(queue::add);
        System.out.print(Arrays.toString(queue.toArray()));
//
//        int[] nums = {1, 5, 3, 7, 2, 8, 4, 9, 6, 10, 20, 15, 12, 11, 14, 13, 16, 17, 18, 19, 21};
//
//        // 获取最大10个数
//        PriorityQueue<Integer> maxQueue = new PriorityQueue<>(10, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1;
//            }
//        });
//
//        for (int num : nums) {
//            maxQueue.add(num);
//        }
//
//        System.out.println("最大10个数: " + Arrays.toString(maxQueue.toArray()));
//
//        // 获取最小10个数
//        PriorityQueue<Integer> minQueue = new PriorityQueue<>(10, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o1 - o2;
//            }
//        });
//
//        for (int num : nums) {
//            minQueue.add(num);
//        }
//
//        System.out.println("最小10个数: " + Arrays.toString(minQueue.toArray()));
    }
}
